package com.dwy2002.common.annotation;

import com.dwy2002.enums.Logical;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义权限注解
 *
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/04/03
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresPermission {
    String[] value(); // 需要的权限代码（如 {"A1", "B1"}）

    Logical logical() default Logical.OR; // 校验逻辑：AND 或 OR

    /*
    使用场景：
        优先 Controller 层：面向接口的权限校验更直观、更安全。
        补充 Service 层：对敏感业务逻辑做双重兜底校验。

        场景	                  推荐层级	          示例操作
    普通 HTTP 接口	        Controller	        用户增删改查
    内部核心业务（如支付）	    Service	            资金扣减、订单状态变更
    高危操作（如删除数据库）	Controller+Service	数据清除、权限分配
     */
}

